<style lang="less">
	@import "./home.less";
	@import "../../styles/common.less";
</style>
<template>
	<div class="home-main">
		<Row>
			<Col span="24">
			<h1>简单说明</h1>
			<div>
				<ol>
					<li>1.这是一个前后台分离的项目,前端主要是vue,iview(iview-admin),后台主要是基于springboot</li>
					<li>2.iview-admin打包以后部署在nginx下,请求页面返回的都是vue.需要后台请求数据的时候发送的请求都是/api开头的,nginx会转发给后台.</li>
					<li>3.后台主要划分为几个模块:1.system对应目录系统管理 2.message对应消息管理 3.log-collector-mq主要用于在分布式环境下的日志收集 4.message-sender主要用于消息的发送</li>
					<li>4.后台模块之间同步调用是通过eureka-server,异步调用是通过rabbitmq</li>
					<li>用到的一些中间件:</li>
					<li>redis:缓存主要是通过spring cache缓存在redis里,不过因为spring没有完全实现,所以自己也完善了点,redis还有个作用就是存了session</li>
					<li>mysql:主要和message和system模块打交道,但是其他模块比如message-sender也会用到,但是比较少,主要是存业务相关数据</li>
					<li>rabbitmq:主要是模块之间异步通信,比如存要发送的信息(短信,邮件,站内信)或者日志(从各个模块收集起来的)</li>
					<li>mongodb:主要存日志数据和消息发送的数据</li>
					<li>部署情况:</li>
					<li>中间件基本都部署在各自默认的端口,然后各个模块可以参考各自的yml文件.里面有server.port.但是因为打包部署的时候只有1台机器,1个模块可能要运行多个实例,所以可能会在打包的时候修改数据,这些在jenkins打包的时候可以自行修改.</li>
					<li>jenkins打包地址:http://47.100.113.51:5000/ 账户密码:admin/123456   可以查看各个模块具体打包部署细节(不过里面还要运行一些shell脚本可以问我)</li>
					<li>eureka-server:http://47.100.113.51:1500/和http://47.100.113.51:1501/ 里面的所有模块都可以运行多个实例,但是内存原因,所以目前有些模块只运行了1个实例..有些模块还没有运行(springboot admin).哪些模块跑在哪里看这里也可以</li>
					<li>mysql,rabbitmq,redis,mongodb等跑在http://47.100.118.238/服务器上,java程序和jenkins跑在47.100.113.51服务器上,他们在同一个内网</li>
                    <li>git地址: </li>
                    <li>后台:https://gitee.com/abcwt112/backend</li>
                    <li>前台:https://gitee.com/abcwt112/iview-admin</li>
				</ol>
			</div>
			<br>
			<hr>
			<br>
			<h1>后台主要模块: </h1>
			<div>
				<div><img src="../../images/home/backend_idea.jpg"/></div>
				<div>
					<ol>
						<li>common是放公共依赖的一些工具呀,接口呀等.一般所有模块都要依赖</li>
						<li>eureka-server主要用于模块间同步通信调用,服务注册和发现</li>
						<li>log-collector-mq主要是通过mq在分布式环境下收集日志存到mongodb里</li>
						<li>message和message-web主要是消息管理的service和对应的controller</li>
						<li>system和system-web主要是系统管理的service和对应的controller,但是因为之前前端的种种原因,目前被包含在message和message-web下,不用单独打包,以后会分开</li>
						<li>message-sender模块主要是真正的消息发送服务和查询,可以发送邮件,短信,站内信等</li>
						<li>spring-boot-admin-server主要是用于启动springboot admin服务,但是目前服务器内存不足,并且我是希望在自己系统登录以后它那里不需要再登录,但是对spring security不熟悉,所以目前也没放到服务器上,运行的话也是OK的</li>
					</ol>
				</div>
			</div>
			<br>
			<hr>
			<br>
			<h1>前台: </h1>
			<div>
				<div>
					前台主要是基于iview-admin(vue)来开发的.我选择了它的一些前台功能,实现了后台服务,同时增加了一些自己需要的功能,具体反正现在你已经看到了.大概知道它能干嘛了..就不多解释了
				</div>
			</div>
			<br>
			<hr>
			<br>
			<h1>架构</h1>
			<div>
				<div><img src="../../images/home/backend结构.jpg"/></div>
			</div>
			<br>
			<hr>
			<br>
			<h1>eureka 地址:http://47.100.113.51:1500/和http://47.100.113.51:1501/ </h1>
			<div>
				<div><img src="../../images/home/eureka-server.jpg"/></div>
			</div>
			<br>
			<br>
			<hr>
			<br>
			<h1>jenkins打包 地址:http://47.100.113.51:5000/ 账户密码:admin/123456 </h1>
			<div>
				<div><img src="../../images/home/jenkins.jpg"/></div>
			</div>
			<br>
			</Col>
		</Row>

	</div>
</template>

<script>
    import cityData from './map-data/get-city-value.js';
    import homeMap from './components/map.vue';
    import dataSourcePie from './components/dataSourcePie.vue';
    import visiteVolume from './components/visiteVolume.vue';
    import serviceRequests from './components/serviceRequests.vue';
    import userFlow from './components/userFlow.vue';
    import countUp from './components/countUp.vue';
    import inforCard from './components/inforCard.vue';
    import mapDataTable from './components/mapDataTable.vue';
    import toDoListItem from './components/toDoListItem.vue';

    export default {
        name: 'home',
        components: {
            homeMap,
            dataSourcePie,
            visiteVolume,
            serviceRequests,
            userFlow,
            countUp,
            inforCard,
            mapDataTable,
            toDoListItem
        },
        data () {
            return {
                toDoList: [
                    {
                        title: '去iView官网学习完整的iView组件'
                    },
                    {
                        title: '去iView官网学习完整的iView组件'
                    },
                    {
                        title: '去iView官网学习完整的iView组件'
                    },
                    {
                        title: '去iView官网学习完整的iView组件'
                    },
                    {
                        title: '去iView官网学习完整的iView组件'
                    }
                ],
                count: {
                    createUser: 496,
                    visit: 3264,
                    collection: 24389305,
                    transfer: 39503498
                },
                cityData: cityData,
                showAddNewTodo: false,
                newToDoItemValue: ''
            };
        },
        computed: {
            avatorPath () {
                return localStorage.avatorImgPath;
            }
        },
        methods: {
            addNewToDoItem () {
                this.showAddNewTodo = true;
            },
            addNew () {
                if (this.newToDoItemValue.length !== 0) {
                    this.toDoList.unshift({
                        title: this.newToDoItemValue
                    });
                    setTimeout(() => {
                        this.newToDoItemValue = '';
                    }, 200);
                    this.showAddNewTodo = false;
                } else {
                    this.$Message.error('请输入待办事项内容');
                }
            },
            cancelAdd () {
                this.showAddNewTodo = false;
                this.newToDoItemValue = '';
            }
        }
    };
</script>
